﻿#ifndef LOG_H
#define LOG_H
/**
 \file log.h
 \brief Log Message et Log Systeme
 \author Baptiste Pirault et  Hugo Dubois
 \date 01/06/2012
 \version 1
 **/
#include <QString>
#include <iostream>
#include <Qdatetime.h>
#include <QFile>
#include <QStringList>
#include <QTextStream>
//#include <QDebug>
#include <QTextEdit>
#include "exception.h"

//! \class LogMessage
//! \brief Contient les informations sur un log : le texte et importance
//!
class LogMessage{
private:
    //! \brief Texte du message
    QString text;

    //! \brief Importance du message
    QString prio;

public:
    //! \brief Constructeur
    //!
    //! \param t : QString contenant le message du log
    //! \param p : QString contenant la priorité du log
    LogMessage(QString t, QString p);

    //! \brief Mutateur de text
    //! \param t : QString contenant le texte du message
    void setText(QString t);

    //! \brief Mutateur de prio
    //! \param t : QString contenant la priorité du message
    void setPrio(QString p);

    //! \brief Mutateur de text et prio
    //! \param t : QString contenant le texte du message
    //! \param t : QString contenant la priorité du message
    //! Appel des fonctions setText et setPrio
    void setInfo(QString t, QString p);

    //! \brief Accesseur de text
    //! \return QString avec le message du log
    QString GetText()const;

    //! \brief Accesseur de prio
    //! \return QString avec l'importance du log
    QString GetPrio()const;
};

//! \class LogSysteme
//! \brief Gére les LogMessage en les affichant dans la consolde des logs et dans un fichier .ini
class LogSysteme{
private:
    //! \brief Fichier de sauvegarde des logs
    //!
    //! Utilisation de la classe QFile pour la gestion du fichier
    QFile file;

    //! \brief Pointeur sur un QTextEdit correspondant à la fenêtre de log
    //!
    //! Les logs sont affiché dans l'objet pointé par console
    QTextEdit * console;
public:

    //! \brief Constructeur
    //! \param *c : pointeur sur un QTextEdit
    //!
    //! Le constructeur crée un fichier LogCalculatrice avec la date de création dans son nom dans l'attribut file. Affecte *c à l'attribut console.
    LogSysteme(QTextEdit * c);

    //! \brief Destructeur
    //!
    //! Ferme le fichier file
    ~LogSysteme();

    //! \brief Traite un LogMessage
    //! \param *p : pointeur sur un LogMessage
    //!
    //! Ecrit dans le fichier file le texte et l'importance du LogMessage en ajoutant la date d'écriture. \n Ecrit le même message dans la console des logs.
    void traiter(LogMessage *p);


};

#endif // LOG_H
